<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
      .node:hover path,
      .node.current path,
      .node:active polygon,
      .node:hover polygon,
      .node.current polygon
       {
        stroke: fuchsia;
        stroke-width: 2;
      }
      .edge:active path,
      .edge:hover path,
      .edge.current path,
      .edge:active ellipse,
      .edge:hover ellipse,
      .edge.current ellipse {
        stroke: fuchsia;
        stroke-width: 3;
        stroke-opacity: 1;
      }
      .edge:active polygon,
      .edge:hover polygon,
      .edge.current polygon {
        stroke: fuchsia;
        stroke-width: 3;
        fill: fuchsia;
        stroke-opacity: 1;
        fill-opacity: 1;
      }
      .edge:active text,
      .edge:hover text {
        fill: fuchsia;
      }
      .cluster path {
        stroke-width: 3;
      }
      .cluster:active path,
      .cluster:hover path {
        fill: #ffff0011;
      }
    </style>
  </head>
  <body>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.47.1 (20210417.1919)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="800pt" height="450pt"
 viewBox="0.00 0.00 800.00 450.38" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 446.38)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-446.38 796,-446.38 796,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_src</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M94,-32.38C94,-32.38 772,-32.38 772,-32.38 778,-32.38 784,-38.38 784,-44.38 784,-44.38 784,-422.38 784,-422.38 784,-428.38 778,-434.38 772,-434.38 772,-434.38 94,-434.38 94,-434.38 88,-434.38 82,-428.38 82,-422.38 82,-422.38 82,-44.38 82,-44.38 82,-38.38 88,-32.38 94,-32.38"/>
<text text-anchor="middle" x="433" y="-423.18" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">src</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_src/parse</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M301,-50.38C301,-50.38 624,-50.38 624,-50.38 630,-50.38 636,-56.38 636,-62.38 636,-62.38 636,-156.38 636,-156.38 636,-162.38 630,-168.38 624,-168.38 624,-168.38 301,-168.38 301,-168.38 295,-168.38 289,-162.38 289,-156.38 289,-156.38 289,-62.38 289,-62.38 289,-56.38 295,-50.38 301,-50.38"/>
<text text-anchor="middle" x="462.5" y="-157.18" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">parse</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_src/render</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M292,-216.38C292,-216.38 608,-216.38 608,-216.38 614,-216.38 620,-222.38 620,-228.38 620,-228.38 620,-372.38 620,-372.38 620,-378.38 614,-384.38 608,-384.38 608,-384.38 292,-384.38 292,-384.38 286,-384.38 280,-378.38 280,-372.38 280,-372.38 280,-228.38 280,-228.38 280,-222.38 286,-216.38 292,-216.38"/>
<text text-anchor="middle" x="450" y="-373.18" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">render</text>
</g>
<!-- bin -->
<g id="node1" class="node">
<title>bin</title>
<g id="a_node1"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/bin" xlink:title="bin">
<polygon fill="#ffffcc" stroke="black" points="54,-119.38 2,-119.38 0,-117.38 0,-101.38 52,-101.38 54,-103.38 54,-119.38"/>
<polyline fill="none" stroke="black" points="52,-117.38 0,-117.38 "/>
<polyline fill="none" stroke="black" points="52,-117.38 52,-101.38 "/>
<polyline fill="none" stroke="black" points="52,-117.38 54,-119.38 "/>
<text text-anchor="middle" x="27" y="-108.17" font-family="Helvetica,sans-Serif" font-size="9.00">bin</text>
</a>
</g>
</g>
<!-- package.json -->
<g id="node2" class="node">
<title>package.json</title>
<g id="a_node2"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/package.json" xlink:title="package.json">
<path fill="#ffee44" stroke="black" d="M359.5,-22.4C359.5,-23.63 343.59,-24.63 324,-24.63 304.41,-24.63 288.5,-23.63 288.5,-22.4 288.5,-22.4 288.5,-2.35 288.5,-2.35 288.5,-1.12 304.41,-0.12 324,-0.12 343.59,-0.12 359.5,-1.12 359.5,-2.35 359.5,-2.35 359.5,-22.4 359.5,-22.4"/>
<path fill="none" stroke="black" d="M359.5,-22.4C359.5,-21.17 343.59,-20.17 324,-20.17 304.41,-20.17 288.5,-21.17 288.5,-22.4"/>
<text text-anchor="middle" x="324" y="-10.18" font-family="Helvetica,sans-Serif" font-size="9.00">package.json</text>
</a>
</g>
</g>
<!-- bin&#45;&gt;package.json -->
<g id="edge1" class="edge">
<title>bin&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M54.26,-110.25C121.71,-110.25 291,-110.25 291,-110.25 291,-110.25 291,-29.99 291,-29.99"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="293.1,-29.99 291,-23.99 288.9,-29.99 293.1,-29.99"/>
</g>
<!-- src/cli -->
<g id="node3" class="node">
<title>src/cli</title>
<g id="a_node3"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli" xlink:title="cli">
<polygon fill="#ccffcc" stroke="black" points="144,-216.38 92,-216.38 90,-214.38 90,-198.38 142,-198.38 144,-200.38 144,-216.38"/>
<polyline fill="none" stroke="black" points="142,-214.38 90,-214.38 "/>
<polyline fill="none" stroke="black" points="142,-214.38 142,-198.38 "/>
<polyline fill="none" stroke="black" points="142,-214.38 144,-216.38 "/>
<text text-anchor="middle" x="117" y="-205.18" font-family="Helvetica,sans-Serif" font-size="9.00">cli</text>
</a>
</g>
</g>
<!-- bin&#45;&gt;src/cli -->
<g id="edge2" class="edge">
<title>bin&#45;&gt;src/cli</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M54,-114.12C80.51,-114.12 117,-114.12 117,-114.12 117,-114.12 117,-192.09 117,-192.09"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="114.9,-192.09 117,-198.09 119.1,-192.09 114.9,-192.09"/>
</g>
<!-- src/index&#45;node.js -->
<g id="node4" class="node">
<title>src/index&#45;node.js</title>
<g id="a_node4"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/index-node.js" xlink:title="index&#45;node.js">
<path fill="#ffffcc" stroke="black" d="M246,-216.38C246,-216.38 186,-216.38 186,-216.38 183,-216.38 180,-213.38 180,-210.38 180,-210.38 180,-204.38 180,-204.38 180,-201.38 183,-198.38 186,-198.38 186,-198.38 246,-198.38 246,-198.38 249,-198.38 252,-201.38 252,-204.38 252,-204.38 252,-210.38 252,-210.38 252,-213.38 249,-216.38 246,-216.38"/>
<text text-anchor="middle" x="216" y="-205.18" font-family="Helvetica,sans-Serif" font-size="9.00">index&#45;node.js</text>
</a>
</g>
</g>
<!-- src/cli&#45;&gt;src/index&#45;node.js -->
<g id="edge3" class="edge">
<title>src/cli&#45;&gt;src/index&#45;node.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M144.05,-207.38C144.05,-207.38 173.7,-207.38 173.7,-207.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="173.7,-209.48 179.7,-207.38 173.7,-205.28 173.7,-209.48"/>
</g>
<!-- src/options.js -->
<g id="node5" class="node">
<title>src/options.js</title>
<g id="a_node5"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/options.js" xlink:title="options.js">
<path fill="#ffffcc" stroke="black" d="M742,-333.38C742,-333.38 698,-333.38 698,-333.38 695,-333.38 692,-330.38 692,-327.38 692,-327.38 692,-321.38 692,-321.38 692,-318.38 695,-315.38 698,-315.38 698,-315.38 742,-315.38 742,-315.38 745,-315.38 748,-318.38 748,-321.38 748,-321.38 748,-327.38 748,-327.38 748,-330.38 745,-333.38 742,-333.38"/>
<text text-anchor="middle" x="720" y="-322.18" font-family="Helvetica,sans-Serif" font-size="9.00">options.js</text>
</a>
</g>
</g>
<!-- src/cli&#45;&gt;src/options.js -->
<g id="edge4" class="edge">
<title>src/cli&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M117,-216.64C117,-225.56 117,-237.71 117,-237.71 117,-237.71 711,-237.71 711,-237.71 711,-237.71 711,-309.1 711,-309.1"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="708.9,-309.1 711,-315.1 713.1,-309.1 708.9,-309.1"/>
</g>
<!-- src/index&#45;node.js&#45;&gt;package.json -->
<g id="edge5" class="edge">
<title>src/index&#45;node.js&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M252.26,-201.88C272.63,-201.88 294,-201.88 294,-201.88 294,-201.88 294,-30.23 294,-30.23"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="296.1,-30.23 294,-24.23 291.9,-30.23 296.1,-30.23"/>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/options.js -->
<g id="edge6" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M252.03,-205.38C350.7,-205.38 618,-205.38 618,-205.38 618,-205.38 618,-318.88 618,-318.88 618,-318.88 685.86,-318.88 685.86,-318.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="685.86,-320.98 691.86,-318.88 685.86,-316.78 685.86,-320.98"/>
</g>
<!-- src/parse/index.js -->
<g id="node6" class="node">
<title>src/parse/index.js</title>
<g id="a_node6"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/index.js" xlink:title="index.js">
<path fill="#ffccff" stroke="black" d="M345,-139.38C345,-139.38 303,-139.38 303,-139.38 300,-139.38 297,-136.38 297,-133.38 297,-133.38 297,-127.38 297,-127.38 297,-124.38 300,-121.38 303,-121.38 303,-121.38 345,-121.38 345,-121.38 348,-121.38 351,-124.38 351,-127.38 351,-127.38 351,-133.38 351,-133.38 351,-136.38 348,-139.38 345,-139.38"/>
<text text-anchor="middle" x="324" y="-128.18" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/parse/index.js -->
<g id="edge7" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/parse/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M246,-198.31C246,-179.04 246,-135.78 246,-135.78 246,-135.78 290.72,-135.78 290.72,-135.78"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="290.72,-137.88 296.72,-135.78 290.72,-133.68 290.72,-137.88"/>
</g>
<!-- src/render/index&#45;node.js -->
<g id="node7" class="node">
<title>src/render/index&#45;node.js</title>
<g id="a_node7"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/index-node.js" xlink:title="index&#45;node.js">
<path fill="#ccccff" stroke="black" d="M354,-311.38C354,-311.38 294,-311.38 294,-311.38 291,-311.38 288,-308.38 288,-305.38 288,-305.38 288,-299.38 288,-299.38 288,-296.38 291,-293.38 294,-293.38 294,-293.38 354,-293.38 354,-293.38 357,-293.38 360,-296.38 360,-299.38 360,-299.38 360,-305.38 360,-305.38 360,-308.38 357,-311.38 354,-311.38"/>
<text text-anchor="middle" x="324" y="-300.18" font-family="Helvetica,sans-Serif" font-size="9.00">index&#45;node.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/render/index&#45;node.js -->
<g id="edge8" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/render/index&#45;node.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M252.25,-208.88C273.42,-208.88 296,-208.88 296,-208.88 296,-208.88 296,-287.07 296,-287.07"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="293.9,-287.07 296,-293.07 298.1,-287.07 293.9,-287.07"/>
</g>
<!-- src/transform -->
<g id="node8" class="node">
<title>src/transform</title>
<g id="a_node8"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/transform" xlink:title="transform">
<polygon fill="#ffffcc" stroke="black" points="612.5,-194.38 559.5,-194.38 557.5,-192.38 557.5,-176.38 610.5,-176.38 612.5,-178.38 612.5,-194.38"/>
<polyline fill="none" stroke="black" points="610.5,-192.38 557.5,-192.38 "/>
<polyline fill="none" stroke="black" points="610.5,-192.38 610.5,-176.38 "/>
<polyline fill="none" stroke="black" points="610.5,-192.38 612.5,-194.38 "/>
<text text-anchor="middle" x="585" y="-183.18" font-family="Helvetica,sans-Serif" font-size="9.00">transform</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/transform -->
<g id="edge9" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/transform</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M249,-198.21C249,-193.98 249,-189.88 249,-189.88 249,-189.88 551.22,-189.88 551.22,-189.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="551.22,-191.98 557.22,-189.88 551.22,-187.78 551.22,-191.98"/>
</g>
<!-- src/parse/index.js&#45;&gt;src/options.js -->
<g id="edge15" class="edge">
<title>src/parse/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M324,-139.57C324,-164.95 324,-234.04 324,-234.04 324,-234.04 730,-234.04 730,-234.04 730,-234.04 730,-309.05 730,-309.05"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="727.9,-309.05 730,-315.05 732.1,-309.05 727.9,-309.05"/>
</g>
<!-- src/parse/scxml -->
<g id="node11" class="node">
<title>src/parse/scxml</title>
<g id="a_node11"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/scxml" xlink:title="scxml">
<polygon fill="#ffccff" stroke="black" points="478,-106.38 426,-106.38 424,-104.38 424,-88.38 476,-88.38 478,-90.38 478,-106.38"/>
<polyline fill="none" stroke="black" points="476,-104.38 424,-104.38 "/>
<polyline fill="none" stroke="black" points="476,-104.38 476,-88.38 "/>
<polyline fill="none" stroke="black" points="476,-104.38 478,-106.38 "/>
<text text-anchor="middle" x="451" y="-95.17" font-family="Helvetica,sans-Serif" font-size="9.00">scxml</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/scxml -->
<g id="edge16" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/scxml</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M333,-121.05C333,-110.53 333,-94.88 333,-94.88 333,-94.88 417.93,-94.88 417.93,-94.88"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="417.93,-96.98 423.93,-94.88 417.93,-92.78 417.93,-96.98"/>
</g>
<!-- src/parse/smcat&#45;ast.schema.json -->
<g id="node12" class="node">
<title>src/parse/smcat&#45;ast.schema.json</title>
<g id="a_node12"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/smcat-ast.schema.json" xlink:title="smcat&#45;ast.schema.json">
<path fill="#ffccff" stroke="black" d="M506,-140.4C506,-141.63 481.35,-142.63 451,-142.63 420.65,-142.63 396,-141.63 396,-140.4 396,-140.4 396,-120.35 396,-120.35 396,-119.12 420.65,-118.12 451,-118.12 481.35,-118.12 506,-119.12 506,-120.35 506,-120.35 506,-140.4 506,-140.4"/>
<path fill="none" stroke="black" d="M506,-140.4C506,-139.17 481.35,-138.17 451,-138.17 420.65,-138.17 396,-139.17 396,-140.4"/>
<text text-anchor="middle" x="451" y="-128.18" font-family="Helvetica,sans-Serif" font-size="9.00">smcat&#45;ast.schema.json</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/smcat&#45;ast.schema.json -->
<g id="edge17" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/smcat&#45;ast.schema.json</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M351.24,-130.38C351.24,-130.38 389.85,-130.38 389.85,-130.38"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="389.85,-132.48 395.85,-130.38 389.85,-128.28 389.85,-132.48"/>
</g>
<!-- src/parse/smcat -->
<g id="node13" class="node">
<title>src/parse/smcat</title>
<g id="a_node13"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/smcat" xlink:title="smcat">
<polygon fill="#ffccff" stroke="black" points="478,-76.38 426,-76.38 424,-74.38 424,-58.38 476,-58.38 478,-60.38 478,-76.38"/>
<polyline fill="none" stroke="black" points="476,-74.38 424,-74.38 "/>
<polyline fill="none" stroke="black" points="476,-74.38 476,-58.38 "/>
<polyline fill="none" stroke="black" points="476,-74.38 478,-76.38 "/>
<text text-anchor="middle" x="451" y="-65.17" font-family="Helvetica,sans-Serif" font-size="9.00">smcat</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/smcat -->
<g id="edge18" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/smcat</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M315,-121.35C315,-103.93 315,-67.38 315,-67.38 315,-67.38 417.81,-67.38 417.81,-67.38"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="417.81,-69.48 423.81,-67.38 417.81,-65.28 417.81,-69.48"/>
</g>
<!-- src/render/dot -->
<g id="node16" class="node">
<title>src/render/dot</title>
<g id="a_node16"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot" xlink:title="dot">
<polygon fill="#ccccff" stroke="black" points="612,-322.38 560,-322.38 558,-320.38 558,-304.38 610,-304.38 612,-306.38 612,-322.38"/>
<polyline fill="none" stroke="black" points="610,-320.38 558,-320.38 "/>
<polyline fill="none" stroke="black" points="610,-320.38 610,-304.38 "/>
<polyline fill="none" stroke="black" points="610,-320.38 612,-322.38 "/>
<text text-anchor="middle" x="585" y="-311.18" font-family="Helvetica,sans-Serif" font-size="9.00">dot</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/dot -->
<g id="edge25" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/dot</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M360.02,-307.88C360.02,-307.88 551.7,-307.88 551.7,-307.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="551.7,-309.98 557.7,-307.88 551.7,-305.78 551.7,-309.98"/>
</g>
<!-- src/render/scjson -->
<g id="node17" class="node">
<title>src/render/scjson</title>
<g id="a_node17"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson" xlink:title="scjson">
<polygon fill="#ccccff" stroke="black" points="612,-267.38 560,-267.38 558,-265.38 558,-249.38 610,-249.38 612,-251.38 612,-267.38"/>
<polyline fill="none" stroke="black" points="610,-265.38 558,-265.38 "/>
<polyline fill="none" stroke="black" points="610,-265.38 610,-249.38 "/>
<polyline fill="none" stroke="black" points="610,-265.38 612,-267.38 "/>
<text text-anchor="middle" x="585" y="-256.18" font-family="Helvetica,sans-Serif" font-size="9.00">scjson</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/scjson -->
<g id="edge26" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/scjson</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M360.04,-306.12C409.4,-306.12 492,-306.12 492,-306.12 492,-306.12 492,-259.88 492,-259.88 492,-259.88 551.6,-259.88 551.6,-259.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="551.6,-261.98 557.6,-259.88 551.6,-257.78 551.6,-261.98"/>
</g>
<!-- src/render/scxml -->
<g id="node18" class="node">
<title>src/render/scxml</title>
<g id="a_node18"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml" xlink:title="scxml">
<polygon fill="#ccccff" stroke="black" points="478,-300.38 426,-300.38 424,-298.38 424,-282.38 476,-282.38 478,-284.38 478,-300.38"/>
<polyline fill="none" stroke="black" points="476,-298.38 424,-298.38 "/>
<polyline fill="none" stroke="black" points="476,-298.38 476,-282.38 "/>
<polyline fill="none" stroke="black" points="476,-298.38 478,-300.38 "/>
<text text-anchor="middle" x="451" y="-289.18" font-family="Helvetica,sans-Serif" font-size="9.00">scxml</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/scxml -->
<g id="edge27" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/scxml</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M360.05,-296.88C360.05,-296.88 417.75,-296.88 417.75,-296.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="417.75,-298.98 423.75,-296.88 417.75,-294.78 417.75,-298.98"/>
</g>
<!-- src/render/smcat -->
<g id="node19" class="node">
<title>src/render/smcat</title>
<g id="a_node19"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/smcat" xlink:title="smcat">
<polygon fill="#ccccff" stroke="black" points="478,-270.38 426,-270.38 424,-268.38 424,-252.38 476,-252.38 478,-254.38 478,-270.38"/>
<polyline fill="none" stroke="black" points="476,-268.38 424,-268.38 "/>
<polyline fill="none" stroke="black" points="476,-268.38 476,-252.38 "/>
<polyline fill="none" stroke="black" points="476,-268.38 478,-270.38 "/>
<text text-anchor="middle" x="451" y="-259.18" font-family="Helvetica,sans-Serif" font-size="9.00">smcat</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/smcat -->
<g id="edge28" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/smcat</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M356,-293.3C356,-282.2 356,-264.88 356,-264.88 356,-264.88 417.78,-264.88 417.78,-264.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="417.78,-266.98 423.78,-264.88 417.78,-262.78 417.78,-266.98"/>
</g>
<!-- src/render/vector -->
<g id="node20" class="node">
<title>src/render/vector</title>
<g id="a_node20"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector" xlink:title="vector">
<polygon fill="#ccccff" stroke="black" points="478,-344.38 426,-344.38 424,-342.38 424,-326.38 476,-326.38 478,-328.38 478,-344.38"/>
<polyline fill="none" stroke="black" points="476,-342.38 424,-342.38 "/>
<polyline fill="none" stroke="black" points="476,-342.38 476,-326.38 "/>
<polyline fill="none" stroke="black" points="476,-342.38 478,-344.38 "/>
<text text-anchor="middle" x="451" y="-333.18" font-family="Helvetica,sans-Serif" font-size="9.00">vector</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/vector -->
<g id="edge29" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/vector</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M360.05,-309.62C397.6,-309.62 451,-309.62 451,-309.62 451,-309.62 451,-320.37 451,-320.37"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="448.9,-320.37 451,-326.37 453.1,-320.37 448.9,-320.37"/>
</g>
<!-- src/state&#45;machine&#45;model.js -->
<g id="node15" class="node">
<title>src/state&#45;machine&#45;model.js</title>
<g id="a_node15"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/state-machine-model.js" xlink:title="state&#45;machine&#45;model.js">
<path fill="#ffffcc" stroke="black" d="M770,-230.38C770,-230.38 670,-230.38 670,-230.38 667,-230.38 664,-227.38 664,-224.38 664,-224.38 664,-218.38 664,-218.38 664,-215.38 667,-212.38 670,-212.38 670,-212.38 770,-212.38 770,-212.38 773,-212.38 776,-215.38 776,-218.38 776,-218.38 776,-224.38 776,-224.38 776,-227.38 773,-230.38 770,-230.38"/>
<text text-anchor="middle" x="720" y="-219.18" font-family="Helvetica,sans-Serif" font-size="9.00">state&#45;machine&#45;model.js</text>
</a>
</g>
</g>
<!-- src/transform&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge39" class="edge">
<title>src/transform&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M594,-194.73C594,-206.64 594,-225.71 594,-225.71 594,-225.71 657.63,-225.71 657.63,-225.71"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="657.63,-227.81 663.63,-225.71 657.63,-223.61 657.63,-227.81"/>
</g>
<!-- src/index.js -->
<g id="node9" class="node">
<title>src/index.js</title>
<g id="a_node9"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/index.js" xlink:title="index.js">
<path fill="#ffffcc" stroke="black" d="M237,-139.38C237,-139.38 195,-139.38 195,-139.38 192,-139.38 189,-136.38 189,-133.38 189,-133.38 189,-127.38 189,-127.38 189,-124.38 192,-121.38 195,-121.38 195,-121.38 237,-121.38 237,-121.38 240,-121.38 243,-124.38 243,-127.38 243,-127.38 243,-133.38 243,-133.38 243,-136.38 240,-139.38 237,-139.38"/>
<text text-anchor="middle" x="216" y="-128.18" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index.js&#45;&gt;package.json -->
<g id="edge10" class="edge">
<title>src/index.js&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M243.01,-124.97C264.85,-124.97 292,-124.97 292,-124.97 292,-124.97 292,-30 292,-30"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="294.1,-30 292,-24 289.9,-30 294.1,-30"/>
</g>
<!-- src/index.js&#45;&gt;src/options.js -->
<g id="edge11" class="edge">
<title>src/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M225,-139.61C225,-148.16 225,-159.56 225,-159.56 225,-159.56 646,-159.56 646,-159.56 646,-159.56 646,-317.12 646,-317.12 646,-317.12 685.6,-317.12 685.6,-317.12"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="685.6,-319.23 691.6,-317.12 685.6,-315.03 685.6,-319.23"/>
</g>
<!-- src/index.js&#45;&gt;src/parse/index.js -->
<g id="edge12" class="edge">
<title>src/index.js&#45;&gt;src/parse/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M243.25,-128.57C243.25,-128.57 290.76,-128.57 290.76,-128.57"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="290.76,-130.68 296.76,-128.57 290.76,-126.48 290.76,-130.68"/>
</g>
<!-- src/index.js&#45;&gt;src/transform -->
<g id="edge14" class="edge">
<title>src/index.js&#45;&gt;src/transform</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M207,-139.46C207,-155.08 207,-185.38 207,-185.38 207,-185.38 551.2,-185.38 551.2,-185.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="551.2,-187.48 557.2,-185.38 551.2,-183.28 551.2,-187.48"/>
</g>
<!-- src/render/index.js -->
<g id="node10" class="node">
<title>src/render/index.js</title>
<g id="a_node10"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/index.js" xlink:title="index.js">
<path fill="#ccccff" stroke="black" d="M345,-259.38C345,-259.38 303,-259.38 303,-259.38 300,-259.38 297,-256.38 297,-253.38 297,-253.38 297,-247.38 297,-247.38 297,-244.38 300,-241.38 303,-241.38 303,-241.38 345,-241.38 345,-241.38 348,-241.38 351,-244.38 351,-247.38 351,-247.38 351,-253.38 351,-253.38 351,-256.38 348,-259.38 345,-259.38"/>
<text text-anchor="middle" x="324" y="-248.18" font-family="Helvetica,sans-Serif" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index.js&#45;&gt;src/render/index.js -->
<g id="edge13" class="edge">
<title>src/index.js&#45;&gt;src/render/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M243.32,-132.18C256.71,-132.18 270,-132.18 270,-132.18 270,-132.18 270,-250.38 270,-250.38 270,-250.38 290.68,-250.38 290.68,-250.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="290.68,-252.48 296.68,-250.38 290.68,-248.28 290.68,-252.48"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/dot -->
<g id="edge30" class="edge">
<title>src/render/index.js&#45;&gt;src/render/dot</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M351.19,-255.88C367.07,-255.88 384,-255.88 384,-255.88 384,-255.88 384,-316.88 384,-316.88 384,-316.88 551.89,-316.88 551.89,-316.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="551.89,-318.98 557.89,-316.88 551.89,-314.78 551.89,-318.98"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/scjson -->
<g id="edge31" class="edge">
<title>src/render/index.js&#45;&gt;src/render/scjson</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M351.45,-245.38C416.76,-245.38 576,-245.38 576,-245.38 576,-245.38 576,-245.76 576,-245.76"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="573.9,-243.21 576,-249.21 578.1,-243.21 573.9,-243.21"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/scxml -->
<g id="edge32" class="edge">
<title>src/render/index.js&#45;&gt;src/render/scxml</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M324,-259.45C324,-270.55 324,-287.88 324,-287.88 324,-287.88 417.76,-287.88 417.76,-287.88"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="417.76,-289.98 423.76,-287.88 417.76,-285.78 417.76,-289.98"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/smcat -->
<g id="edge33" class="edge">
<title>src/render/index.js&#45;&gt;src/render/smcat</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M351.24,-254.12C351.24,-254.12 417.8,-254.12 417.8,-254.12"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="417.8,-256.23 423.8,-254.12 417.8,-252.03 417.8,-256.23"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/vector -->
<g id="edge34" class="edge">
<title>src/render/index.js&#45;&gt;src/render/vector</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M351.09,-257.62C361.97,-257.62 372,-257.62 372,-257.62 372,-257.62 372,-335.38 372,-335.38 372,-335.38 417.81,-335.38 417.81,-335.38"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="417.81,-337.48 423.81,-335.38 417.81,-333.28 417.81,-337.48"/>
</g>
<!-- src/parse/scxml&#45;&gt;src/transform -->
<g id="edge20" class="edge">
<title>src/parse/scxml&#45;&gt;src/transform</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M478.18,-100.38C498.94,-100.38 524,-100.38 524,-100.38 524,-100.38 524,-180.88 524,-180.88 524,-180.88 551.36,-180.88 551.36,-180.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="551.36,-182.98 557.36,-180.88 551.36,-178.78 551.36,-182.98"/>
</g>
<!-- src/parse/parser&#45;helpers.js -->
<g id="node14" class="node">
<title>src/parse/parser&#45;helpers.js</title>
<g id="a_node14"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/parser-helpers.js" xlink:title="parser&#45;helpers.js">
<path fill="#ffccff" stroke="black" d="M622,-106.38C622,-106.38 548,-106.38 548,-106.38 545,-106.38 542,-103.38 542,-100.38 542,-100.38 542,-94.38 542,-94.38 542,-91.38 545,-88.38 548,-88.38 548,-88.38 622,-88.38 622,-88.38 625,-88.38 628,-91.38 628,-94.38 628,-94.38 628,-100.38 628,-100.38 628,-103.38 625,-106.38 622,-106.38"/>
<text text-anchor="middle" x="585" y="-95.17" font-family="Helvetica,sans-Serif" font-size="9.00">parser&#45;helpers.js</text>
</a>
</g>
</g>
<!-- src/parse/scxml&#45;&gt;src/parse/parser&#45;helpers.js -->
<g id="edge21" class="edge">
<title>src/parse/scxml&#45;&gt;src/parse/parser&#45;helpers.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M478.12,-94.38C478.12,-94.38 535.83,-94.38 535.83,-94.38"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="535.83,-96.48 541.83,-94.38 535.83,-92.28 535.83,-96.48"/>
</g>
<!-- src/parse/smcat&#45;&gt;src/parse/parser&#45;helpers.js -->
<g id="edge22" class="edge">
<title>src/parse/smcat&#45;&gt;src/parse/parser&#45;helpers.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M478.12,-67.38C517.27,-67.38 585,-67.38 585,-67.38 585,-67.38 585,-82.21 585,-82.21"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="582.9,-82.21 585,-88.21 587.1,-82.21 582.9,-82.21"/>
</g>
<!-- src/parse/parser&#45;helpers.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge19" class="edge">
<title>src/parse/parser&#45;helpers.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M623,-106.67C623,-135.43 623,-221.04 623,-221.04 623,-221.04 657.86,-221.04 657.86,-221.04"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="657.86,-223.14 663.86,-221.04 657.86,-218.94 657.86,-223.14"/>
</g>
<!-- src/render/dot&#45;&gt;src/options.js -->
<g id="edge23" class="edge">
<title>src/render/dot&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M612.32,-320.62C612.32,-320.62 685.79,-320.62 685.79,-320.62"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="685.79,-322.73 691.79,-320.62 685.79,-318.53 685.79,-322.73"/>
</g>
<!-- src/render/dot&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge24" class="edge">
<title>src/render/dot&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M612.04,-309.88C641.05,-309.88 683,-309.88 683,-309.88 683,-309.88 683,-236.51 683,-236.51"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="685.1,-236.51 683,-230.51 680.9,-236.51 685.1,-236.51"/>
</g>
<!-- src/render/scjson&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge35" class="edge">
<title>src/render/scjson&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M612.19,-258.38C638.36,-258.38 674,-258.38 674,-258.38 674,-258.38 674,-236.71 674,-236.71"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="676.1,-236.71 674,-230.71 671.9,-236.71 676.1,-236.71"/>
</g>
<!-- src/render/scxml&#45;&gt;src/render/scjson -->
<g id="edge36" class="edge">
<title>src/render/scxml&#45;&gt;src/render/scjson</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M478.12,-291.38C517.27,-291.38 585,-291.38 585,-291.38 585,-291.38 585,-273.39 585,-273.39"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="587.1,-273.39 585,-267.39 582.9,-273.39 587.1,-273.39"/>
</g>
<!-- src/render/vector&#45;&gt;src/options.js -->
<g id="edge37" class="edge">
<title>src/render/vector&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M478.02,-331.04C478.02,-331.04 685.78,-331.04 685.78,-331.04"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="685.78,-333.14 691.78,-331.04 685.78,-328.94 685.78,-333.14"/>
</g>
<!-- src/render/vector&#45;&gt;src/render/dot -->
<g id="edge38" class="edge">
<title>src/render/vector&#45;&gt;src/render/dot</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M478.12,-328.71C517.27,-328.71 585,-328.71 585,-328.71 585,-328.71 585,-328.08 585,-328.08"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="587.1,-328.47 585,-322.47 582.9,-328.47 587.1,-328.47"/>
</g>
</g>
</svg>
<script>document.body.onmouseover = getHighlightHandler();

function getHighlightHandler() {
  /** @type {string} */
  var currentHighlightedTitle;

  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  var title2ElementMap = new Title2ElementMap(edges, nodes);

  /** @param {MouseEvent} pMouseEvent */
  return function highlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (!(currentHighlightedTitle === closestTitleText)) {
      title2ElementMap.get(currentHighlightedTitle).forEach(removeHighlight);
      title2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}
</script>  </body>
</html>
